package com.liuyi.netty.im.commons.codes;

import com.liuyi.netty.im.commons.codes.data.LimData;
import lombok.Data;

import java.io.Serializable;

/**
 * 协议包
 *
 * @author Mr.Fmy
 * @since 2021-11-23
 */
@Data
public class LimProtocol implements Serializable {

    private static final long serialVersionUID = -5730570988980258976L;

    /**
     * 魔数 4字节
     */
    private int magicNumber = CodeConst.MAGIC_NUMBER;

    /**
     * 版本号 1字节
     */
    private byte version;

    /**
     * 数据类型 1字节
     */
    private byte dataType;

    /**
     * 指令 1字节
     */
    private CodeConst.Command command;

    /**
     * 长度 4字节
     */
    private int dataLength;

    /**
     * 数据内容
     */
    private LimData data;

    @Override
    public String toString() {
        return "LimProtocol{" +
                "magicNumber=" + magicNumber +
                ", version=" + version +
                ", dataType=" + dataType +
                ", command=" + command +
                ", dataLength=" + dataLength +
                ", data=" + data +
                '}';
    }
}
